package com.qf.feign;

import com.qf.conf.FeignLogerConf;
import com.qf.pojo.Result;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;

/*
    @EnableFeignClients 这个注解会触发扫描当前项目下所有加了@FeignClient注解的接口
    并且根据这个接口描述，生成代理对象，在代理对象的方法实现中，使用RestTemplate发起远程调用
    并且将这个接口的代理对象注入到当前项目的spring容器中

    而且他不影响其他比如服务保护的功能

    注意：
        ① 这个接口上不能使用@RequestMapping定义共性路径
        ② 所有方法参数的注解必须名命,比如@PathVariable("uid")不可以简写为@PathVariable
 */

@FeignClient(value = "ORDER-PROVIDER",
        fallback = OrderFeignClientFallback.class,
        configuration = FeignLogerConf.class
)
//@RequestMapping("/order")
public interface OrderFeignClient {

    @GetMapping("/order/{uid}")
    public Result findByUid(@PathVariable("uid") Integer uid);
}
